//
// Created by denglibin on 2021/3/26.
// 用矩形填充WinSurface
#include <SDL.h>
#define WIN_WIDTH 600
#define WIN_HEIGHT 400
static SDL_Window * win; //窗口
static SDL_Surface * winSurface; //窗口的surface
static int run  = 1; // 状态 是否运行
/**
 * 事件循环
 */
static void eventLoop(){
    SDL_Event  event;
    while (run)
    {//主消息循环
        SDL_WaitEvent(&event); //阻塞
        switch (event.type)
        {
            //用户从菜单要求退出程序
            case SDL_QUIT:
                run = 0;
                break;
            default:
                break;
        }
    }
    SDL_Quit();
}

/**
 * 创建显示窗口
 * @return
 */
static int showWindow(){
    //初始化，成功返回0
    if (SDL_Init(SDL_INIT_VIDEO)) {
        SDL_Log("Can not init video %s\n", SDL_GetError());
        return 1;
    }
     win = SDL_CreateWindow("Hello World",
                                        SDL_WINDOWPOS_CENTERED,
                                        SDL_WINDOWPOS_CENTERED,
                                        WIN_WIDTH,
                                        WIN_HEIGHT,
                                        SDL_WINDOW_SHOWN
    );
    if (win == NULL) {
        SDL_Log("Can not create window %s\n", SDL_GetError());
        return 2;
    }
    winSurface = SDL_GetWindowSurface(win);
    //矩形
    struct SDL_Rect  r = {0, 0, WIN_WIDTH, WIN_HEIGHT};
    //用矩形填充winSurface
    SDL_FillRect(winSurface, &r, 0xFF00AA00);

    //矩形
    struct SDL_Rect redR = {0, 0, 200, 200};
    //填充
    SDL_FillRect(winSurface, &redR, 0xFFAA0000);

    //更新winSurface
    SDL_UpdateWindowSurface(win);
    return 0;

}

/**
 * 清理
 */
static void clean(){
    SDL_DestroyWindow(win);
}
int main2_3(int argc, char* argv[]){
     if (showWindow()){
         exit(1);
     }
     eventLoop();
     clean();
}

